<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   <title>TCPDeliver フィルタ</title>
   <link rel="stylesheet" type="text/css" href="../../avisynth.css">
   <link rel="stylesheet" type="text/css" href="../ja.css">
<!--
Automatically generated, don't change:
$Id: tcpdeliver.htm,v 1.1 2008/06/30 22:01:50 ianb1957 Exp $
-->

</head>
<body >
<h2>
<a NAME="TCPDeliver"></a>TCPServer / TCPSource
</h2>
<p><code>TCPServer</code> (<var>clip, int &quot;port&quot;</var>)<br>
<code>TCPSource</code> (<var>string hostname, int &quot;port&quot;, string
&quot;compression&quot;</var>)</p>

<p>このフィルタは、ネットワーク経由でクリップを送信することを可能にします。複数のクライアントを同じマシンに接続することができます。</p>

<h3>シンタックス</h3>
<h4>サーバー:</h4>
<p><code>TCPServer</code> (<var>clip, int &quot;port&quot;</var>)</p>

<p>このフィルタは、指定されたポート（<var>port</var>）で動作しているカレントのマシン上にサーバースレッドを起動します。<var>port</var> のデフォルトは、22050 です。<br>
スクリプトを開いたアプリケーションで出力を得ることができますが、サーバーはアプリケーション（たとえば VirtualDub）が開いている間のみ動作しています。<br>
<br>
使用例:</p>
<pre>Colorbars(512, 256)
TCPServer()</pre>
<p>サーバーを起動します。</p>

<h4>Client:</h4>
<p><code>TCPSource</code> (<var>string hostname, int &quot;port&quot;, string
&quot;compression&quot;</var>)</p>

<p>このフィルタは、与えられたアドレス（<var>hostname</var>。たとえば IP 番号）を持つマシンの、与えられたポート（<var>port</var>）で動作しているサーバーに接続します。<var>port</var> のデフォルトは、ここでも 22050 です。</p>

<p><var>compression</var> は、ビデオに対して使用される圧縮方法を選択することを可能にします。</p>
<table border="1" width="100%">
  <tr>
    <td width="10%" align="center"><b>圧縮タイプ</b></td>
    <td width="50%" align="center"><b>説明</b></td>
  </tr>
  <tr>
    <td width="10%">None</td>
    <td width="50%">圧縮を使用しません。最も高速なオプションです - ビデオは、ネット経由で送信される前に圧縮されません。</td>
  </tr>
  <tr>
    <td width="10%">LZO</td>
    <td width="50%"><a href="http://www.oberhumer.com/opensource/lzo/"><cite>LZO</cite></a> 辞書圧縮<a href="#footnote_1" class="footnote_link">*1</a>を使用します。かなり高速ですが、見た目が非常に均一的な漫画やアニメのような人工的なソースに関してのみうまく圧縮します。</td>
  </tr>
  <tr>
    <td width="10%">Huffman</td>
    <td width="50%"><a href="http://bcl.sourceforge.net/"><cite>Marcus
      Geelnard</cite></a> による、かなり低速なハフマン<a href="#footnote_2" class="footnote_link">*2</a>ルーチンを使用します。LZO よりも実写映像を圧縮します。</td>
  </tr>
  <tr>
    <td width="10%">GZip</td>
    <td width="50%"><a href="http://www.gzip.org/"><cite>Gzip</cite></a> ハフマンのみの圧縮を使用します。Huffman の設定に非常に近い動作をしますが、より高速なようです。</td>
  </tr>
</table>

<p><var>compression</var> が省略された場合、現在のところデフォルトで GZip が使用されます。インターレース素材は、差分符号化<a href="#footnote_3" class="footnote_link">*3</a>のため、ノンインターレース素材よりうまく圧縮されません。ネットワーク速度が問題なら、<a href="separatefields.htm">SeparateFields</a> を使うとよいでしょう。</p>

<p>使用例:</p>
<pre>TCPSource(&quot;127.0.0.1&quot;)
Info()</pre>

<p>サーバーが動作しているなら、ローカルマシーンへ接続します。</p>

<h3>使用例</h3>
<p>これを使って各フィルタまたはいくつかのフィルタを異なる PC で動作させることができます。たとえば:</p>

<pre># クラスタメンバー 1:
AVISource
Deinterlacer
TCPServer

# クラスタメンバー 2:
TCPSource
Sharpener
TCPServer

# クラスタメンバー 3:
TCPSource
# クライアントアプリ -&gt; ビデオコーデック -&gt; 最終ファイル</pre>

<h3>ユーザビリティに関する覚え書き</h3>
<p>いったん TCPServer を追加すると、そのチェインにフィルタ追加したり、そのフィルタからの出力を使用したりすることはできません。サーバーは独立したスレッドで動作しますが、AviSynth が完全にスレッドセーフ<a href="#footnote_4" class="footnote_link">*4</a>ではないため、複数のサーバーを確実に動作させることはできません。以下のスクリプトは使用すべきでは<b>ありません</b>:</p>

<pre>AviSource("avi.avi")
TCPServer(1001)
TCPServer(1002) # これは良いアイデアではない</pre>

<p>基本的なルールは、<b>1 スクリプトあたり 2 つ以上の TCPServer を使用しないこと</b>です。</p>

<p>TCPServer のあとにコマンドを使用するのも悪いアイデアです:</p>

<pre>AviSource("avi.avi")
TCPServer(1001)
AviSource("avi2.avi") # やってはいけない。これはサーバーを無効化する。</pre>

<p>AviSynth は、TCPServer の出力が使用されないということを検出します。そのため、サーバーフィルタを中断します。<b>TCPServer は、つねに最後のフィルタであるべきです。</b></p>

<h3>更新履歴</h3>
<table border="1">
  <tbody>
    <tr>
      <td>v2.55</td>
      <td>初版</td>
    </tr>
  </tbody>
</table>

<p><kbd>原文 Date: 2006/01/02 14:51:17</kbd><br />
<kbd>日本語訳 $Date: 2008/06/30 22:01:50 $</kbd></p>
<form><input TYPE="Button" VALUE="戻る" onClick="history.go(-1)"></form>

<hr />
<div id="footnote">
<ul>
  <li>訳者註:
    <ul>
      <li><a name="footnote_1" class="footnote_link">*1</a> <span class="footnote_text">参考: <a href="http://e-words.jp/w/LZ77.html">LZ77とは 【Lempel-Ziv 77】 - 意味・解説 ： IT用語辞典</a>、<a href="http://www3.big.or.jp/~schaft/member/synapse/compression/">圧縮よもやま話</a></span></li>
      <li><a name="footnote_2" class="footnote_link">*2</a> <span class="footnote_text">参考: <a href="http://e-words.jp/w/E3838FE38395E3839EE383B3E7ACA6E58FB7E58C96.html">IT用語辞典 e-Words ： ハフマン符号化とは 【Huffman encoding】　─　意味・解説</a></span></li>
      <li><a name="footnote_3" class="footnote_link">*3</a> <span class="footnote_text">原文 deltaencodeing。参考: <a href="http://ja.wikipedia.org/wiki/%E5%B7%AE%E5%88%86%E7%AC%A6%E5%8F%B7%E5%8C%96">差分符号化 - Wikipedia</a></span></li>
      <li><a name="footnote_4" class="footnote_link">*4</a> <span class="footnote_text">参考: <a href="http://e-words.jp/w/E382B9E383ACE38383E38389E382BBE383BCE38395.html">スレッドセーフとは 【thread safe】　─　意味・解説 ： IT用語辞典 e-Words</a></span></li>
    </ul>
  </li>
</ul>
</div>

</body>
</html>
